package cqrtplm.mapper;

import com.hustcad.plm.pdm.partbom.dto.PartUsageLink;
import cqrtplm.dto.TyIbaDataDTO;
import cqrtplm.entity.DspfMbomBomDO;
import cqrtplm.entity.DspfMbomDetailDO;
import cqrtplm.vo.MbomVO;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.math.BigInteger;
import java.util.List;

/**
 * BOM详情头Mapper接口
 *
 * @author 江小熊
 * @date 2025-10-24
 */
public interface DspfMbomBomMapper
{
    /**
     * 查询BOM详情头
     *
     * @param bomid BOM详情头主键
     * @return BOM详情头
     */
    public DspfMbomBomDO selectDspfMbomBomByBOMID(String bomid);

    /**
     * 查询BOM详情头列表
     *
     * @param dspfMbomBom BOM详情头
     * @return BOM详情头集合
     */
    public List<DspfMbomBomDO> selectDspfMbomBomList(DspfMbomBomDO dspfMbomBom);

    /**
     * 新增BOM详情头
     *
     * @param dspfMbomBom BOM详情头
     * @return 结果
     */
    public int insertDspfMbomBom(DspfMbomBomDO dspfMbomBom);

    /**
     * 修改BOM详情头
     *
     * @param dspfMbomBom BOM详情头
     * @return 结果
     */
    public int updateDspfMbomBom(DspfMbomBomDO dspfMbomBom);

    /**
     * 删除BOM详情头
     *
     * @param bomid BOM详情头主键
     * @return 结果
     */
    public int deleteDspfMbomBomByBOMID(String bomid);

    /**
     * 批量删除BOM详情头
     *
     * @param bomids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteDspfMbomBomByBOMIDs(String[] bomids);

    List<DspfMbomBomDO> selectDspfMbomBomByStatusId(@Param("statusid") String statusid,@Param("otype") String otype);

    MbomVO selectMbomcodeByProofmbomcode(String proofmbomcode);

    String selectTypeNameByTypeId(BigInteger typeoid);

    List<TyIbaDataDTO> getIbaMapByNumber(@Param("number") String number);

    @Update("update DSPF_MBOM_BOM set MBOMCODE=#{productCode} where BOMID=#{bomid}")
    void updateMbomCodeByBomid(@Param("productCode") String productCode,@Param("bomid") String bomid);

    @Select("  SELECT * FROM ty_partusagelink WHERE aoid = TO_NUMBER(#{poid}) AND boid = TO_NUMBER(#{oid})")
    PartUsageLink queryPartUsageLinkInfo(@Param("poid") String poid,@Param("oid") String oid);
}
